﻿/*
SINACOR - BMF&Bovespa
Arquivo: MensagemErroRecebida.cs
Criado em: 27-mai-2010 14:09:36
Arquiteto Responsável: p-dmartinelli
*/
using System;
using System.Collections.Generic;
using System.Text;
using Sinacor.Infra.Common;
using Sinacor.Infra.UI.Common;
using Sinacor.Infra.Common.Exceptions;

namespace Sinacor.UI.Bovespa.Alocacao.Presenter 
{
    public class MensagemErroRecebida : BasePresenter<IMensagemErroRecebida>
	{
		#region Atributos

		private Communication.MensagemErroRecebida _communicationMensagemErroRecebida;
		private Model.Parameter.FiltroMensagemErroRecebida _filtroMensagemErroRecebida;
		private ModelCollection<Model.MensagemErroRecebida> _listaMensagemErroRecebida;

		#endregion

		#region Propriedades

		public Model.Parameter.FiltroMensagemErroRecebida FiltroMensagemErroRecebida
		{
			get { return this._filtroMensagemErroRecebida; }
			set { this._filtroMensagemErroRecebida = value; }
		}

		public ModelCollection<Model.MensagemErroRecebida> ListaMensagemErroRecebida
		{
			get { return this._listaMensagemErroRecebida; }
			set { this._listaMensagemErroRecebida = value; }
		}

		#endregion

        #region Construtor

        /// <summary>
        /// Construtor padrão
        /// </summary>
        public MensagemErroRecebida(IMensagemErroRecebida view)
            : base(view)
        {
            this._communicationMensagemErroRecebida = new Communication.MensagemErroRecebida(this.Session);

            this.FiltroMensagemErroRecebida = new Model.Parameter.FiltroMensagemErroRecebida();
            this.ListaMensagemErroRecebida = new ModelCollection<Model.MensagemErroRecebida>();            
        }

        #endregion

		#region Métodos

        #region ConsultarMensagemErroRecebida

        /// <summary>
		/// Pesquisa de Inconsistências de Mensagens Recebidas
		/// </summary>
		public void ConsultarMensagemErroRecebida()
		{
            try
            {
                this.ListaMensagemErroRecebida = this._communicationMensagemErroRecebida.ConsultarMensagemErroRecebida(this.FiltroMensagemErroRecebida);

                if (this.ListaMensagemErroRecebida != null && this.ListaMensagemErroRecebida.Count == 0)
                {
                    this.View.InformarPesquisaSemRetorno();
                }

                this.View.AtualizarListaMensagemErroRecebida();
            }
            catch (Exception ex)
            {
                base.HandleException(ex);
            }	
        }

        #endregion

        #region Inicializar

        /// <summary>
		/// Inicia a tela
		/// </summary>
		public void Inicializar()
		{
            this.ConsultarMensagemErroRecebida();
        }

        #endregion

        #region ProcessarAcerto

        /// <summary>
		/// Acerta as mensagens de erro de negócios ETF e Recompra
		/// </summary>
		public void ProcessarAcerto()
		{
            try
            {
                this._communicationMensagemErroRecebida.ProcessarAcerto();

                this.ConsultarMensagemErroRecebida();
            }
            catch (Exception ex)
            {
                base.HandleException(ex);
            }	
        }

        #endregion

        #endregion
    }
}